package com.bj58.mis.apm.server.statistics.mapper;

import com.bj58.mis.apm.server.statistics.dto.job.KylinJob;
import com.bj58.mis.apm.server.statistics.dto.job.KylinJobInfo;
import com.bj58.mis.apm.server.statistics.dto.job.KylinJobStep;
import com.bj58.mis.apm.server.statistics.query.PageInfo;
import com.bj58.mis.apm.server.statistics.query.job.JobQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 * @author zhangyu84
 * @create 2018/6/28
 * @since 1.0.0
 */
@Mapper
public interface JobMapper {
    /**
     * 查询Job列表总条数
     *
     * @param isAdmin 是否管理员，管理员有所有Cube权限
     * @param cubeIdList 有权限的Cube ID列表
     * @param jobQuery 其他查询条件
     * @return
     */
    long getJobNumber(@Param("isAdmin") boolean isAdmin,
                     @Param("cubeIdList") List<String> cubeIdList,
                     @Param("jobQuery")JobQuery jobQuery);
    /**
     * 查询Job概况
     *
     * @param isAdmin 是否管理员，管理员有所有Cube权限
     * @param cubeIdList 有权限的Cube ID列表
     * @param jobQuery 其他查询条件
     * @return
     */
    KylinJob jobSurvey(@Param("isAdmin") boolean isAdmin,
                       @Param("cubeIdList") List<String> cubeIdList,
                       @Param("jobQuery")JobQuery jobQuery);
    /**
     * 查询JobInfo耗时
     *
     * @param isAdmin 是否管理员，管理员有所有Cube权限
     * @param cubeIdList 有权限的Cube ID列表
     * @param jobQuery 其他查询条件
     * @return
     */
    List<KylinJobInfo> jobInfosSurvey(@Param("isAdmin") boolean isAdmin,
                                      @Param("cubeIdList") List<String> cubeIdList,
                                      @Param("jobQuery")JobQuery jobQuery);
    /**
     * 查询Job列表
     *
     * @param isAdmin 是否管理员，管理员有所有Cube权限
     * @param cubeIdList 有权限的Cube ID列表
     * @param jobQuery 其他查询条件
     * @param pageInfo 分页信息
     * @return
     */
    List<KylinJobInfo> jobList(@Param("isAdmin") boolean isAdmin,
                               @Param("cubeIdList") List<String> cubeIdList,
                               @Param("jobQuery")JobQuery jobQuery,
                               @Param("pageInfo")PageInfo pageInfo);
    /**
     * 查询Job详情
     * @param id JobID
     * @return
     */
    KylinJobInfo kylinJobInfo(String id);

    /**
     * 查询Job下的分步情况
     * @param id JobID
     * @return
     */
    List<KylinJobStep> kylinJobStepsByJobId(String id);


}
